/*
 * Copyright (C) 2009 Ionut Dediu <deionut@yahoo.com>
 *
 * Licensed under the GNU General Public License Version 2
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

// TimeWrap.cpp

#include "TimeWrap.h"

CTimeWrap* CTimeWrap::NewL(MTimeWrapObserver& aObserver)
    {
    CTimeWrap* self = NewLC(aObserver);
    CleanupStack::Pop(self);
    return self;
    }

CTimeWrap* CTimeWrap::NewLC(MTimeWrapObserver& aObserver)
    {
    CTimeWrap* self = new (ELeave) CTimeWrap(aObserver);
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
    }

CTimeWrap::CTimeWrap(MTimeWrapObserver& aObserver):
	CActive (CActive::EPriorityStandard),
	iObserver(aObserver)
    {
    CActiveScheduler::Add(this);
    }

CTimeWrap::~CTimeWrap()
    {
    Cancel();
    iTimer.Close();
    }

void CTimeWrap::ConstructL()
    {
    iTimer.CreateLocal();
    }

void CTimeWrap::DoCancel()
    {
	iTimer.Cancel();
    }

void CTimeWrap::After(TTimeIntervalMicroSeconds32 aInterval)
	{
	iTimer.After(iStatus, aInterval);
	SetActive();
	}

void CTimeWrap::RunL()
    {
	if(iStatus.Int() == KErrNone)
		iObserver.TimeElapsed();
    }
